home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 140
/
Gekkan Dennou Club - 2000.1 Vol. 140 (Japan).7z
/
Gekkan Dennou Club - 2000.1 Vol. 140 (Japan) (Track 1).bin
/
tools
/
xpicw
/
xpicw110.lzh
/
WLSource
/
iti16.s
< prev
next >
Wrap
Text File
|
1997-04-10
|
4KB
|
213 lines
* iti16.s 16ドット市松模様ワイプ
* 市松模様が上から下、次にもう一度上から下のワイプ / 最高速 = 2
* by Mitsuky
SPEED_MAX equ 2
.offset 8 * 引き数
_source_ptr: .ds.l 1
_dest_ptr: .ds.l 1
_speed: .ds.l 1
_vdisp: .ds.l 1
GPIP_DATA equ $e8_8001
TR32A .macro num * 16ドット転送マクロ
movem.l num(a2),d0-d4/a0-a1/a6
movem.l d0-d4/a0-a1/a6,num(a3)
.endm
TR32B .macro num * 16ドット転送マクロ
movem.l num(a4),d0-d4/a0-a1/a6
movem.l d0-d4/a0-a1/a6,num(a5)
.endm
.text
.even
.dc.b 'WL10',$0d,$0a
.dc.b '16ドット市松模様ワイプ / 最高速 = 2',$0d,$0a
.dc.b ' by Mitsuky',$0d,$0a
.dc.b $1a
.even
iti16:
link a6,#0
movem.l d1-d7/a0-a5,-(sp)
move.l _speed(a6),d0
bmi iti16_ask_speed
cmpi.l #SPEED_MAX,d0
bhi iti16_err
tst.l _vdisp(a6)
bmi main_ask_vdisp
movea.l _source_ptr(a6),a2 * a2.l = 転送元アドレス・その1
movea.l _dest_ptr(a6),a3 * a3.l = 転送先アドレス・その1
lea.l 32(a2),a4 * a4.l = 転送元アドレス・その2
lea.l 32(a3),a5 * a5.l = 転送先アドレス・その2
* 速度 = 0...SPEED_MAX
moveq.l #16-1,d7 * d7.w = ループ回数-1
moveq.l #SPEED_MAX,d6
sub.w d0,d6 * d6.w = V-SYNC 待ち回数-1
iti16_loop_a: * 上から下へ(1回目)
move.w d6,d0 * d0.w =
@@: bsr vdisp
dbra d0,@b
movem.l a6,-(sp) *
moveq.l #16-1,d5
@@: TR32A 0
TR32A 64*1
TR32A 64*2
TR32A 64*3
TR32A 64*4
TR32A 64*5
TR32A 64*6
TR32A 64*7
TR32A 64*8
TR32A 64*9
TR32A 64*10
TR32A 64*11
TR32A 64*12
TR32A 64*13
TR32A 64*14
TR32A 64*15
TR32A 1024*16+32
TR32A 1024*16+64*1+32
TR32A 1024*16+64*2+32
TR32A 1024*16+64*3+32
TR32A 1024*16+64*4+32
TR32A 1024*16+64*5+32
TR32A 1024*16+64*6+32
TR32A 1024*16+64*7+32
TR32A 1024*16+64*8+32
TR32A 1024*16+64*9+32
TR32A 1024*16+64*10+32
TR32A 1024*16+64*11+32
TR32A 1024*16+64*12+32
TR32A 1024*16+64*13+32
TR32A 1024*16+64*14+32
TR32A 1024*16+64*15+32
adda.l #1024*32,a2
adda.l #1024*32,a3
dbra d5,@b
movem.l (sp)+,a6 *
suba.l #1024*32*16-1024,a2
suba.l #1024*32*16-1024,a3
dbra d7,iti16_loop_a
movea.l a4,a2
movea.l a5,a3
* 上から下へ(2回目)
moveq.l #16-1,d7 * d7.w = ループ回数-1
iti16_loop_b:
move.w d6,d0 * d0.w =
@@: bsr vdisp
dbra d0,@b
movem.l a6,-(sp) *
moveq.l #16-1,d5
@@: TR32A 0
TR32A 64*1
TR32A 64*2
TR32A 64*3
TR32A 64*4
TR32A 64*5
TR32A 64*6
TR32A 64*7
TR32A 64*8
TR32A 64*9
TR32A 64*10
TR32A 64*11
TR32A 64*12
TR32A 64*13
TR32A 64*14
TR32A 64*15
TR32A 1024*16-32
TR32A 1024*16+64*1-32
TR32A 1024*16+64*2-32
TR32A 1024*16+64*3-32
TR32A 1024*16+64*4-32
TR32A 1024*16+64*5-32
TR32A 1024*16+64*6-32
TR32A 1024*16+64*7-32
TR32A 1024*16+64*8-32
TR32A 1024*16+64*9-32
TR32A 1024*16+64*10-32
TR32A 1024*16+64*11-32
TR32A 1024*16+64*12-32
TR32A 1024*16+64*13-32
TR32A 1024*16+64*14-32
TR32A 1024*16+64*15-32
adda.l #1024*32,a2
adda.l #1024*32,a3
dbra d5,@b
movem.l (sp)+,a6 *
suba.l #1024*32*16-1024,a2
suba.l #1024*32*16-1024,a3
dbra d7,iti16_loop_b
moveq.l #0,d0
iti16_rts:
movem.l (sp)+,d1-d7/a0-a5
unlk a6
rts
**** ****
iti16_err:
moveq.l #-1,d0
bra iti16_rts
**** ****
iti16_ask_speed:
moveq.l #SPEED_MAX,d0
bra iti16_rts
**** ****
main_ask_vdisp:
move.l _speed(a6),d0
lea.l ask_vdisp_table(pc),a0
add.w d0,d0
move.w (a0,d0.w),d0
bra iti16_rts
ask_vdisp_table:
.dc.w 32*3,32*2,32*1
*********************************************************
vdisp:
movem.l a0,-(sp)
move.l _vdisp(a6),a0
jsr (a0)
movem.l (sp)+,a0
rts